数据结构课程设计三

您所在的位置:网站首页 读取 英文 数据结构课程设计三

数据结构课程设计三

2023-08-18 20:44| 来源: 网络整理| 查看: 265

 

目录

 

一、实验内容

二、实验要求

三、实现提示:

四、实验方案及其论证

五、数据结构和主要函数

六、源代码

 

 

一、实验内容

       对于一篇给定的英文文章,分别利用线性表和二叉排序树来实现单词频率的统计,实现低频词的过滤,并比较两种方法的效率。

二、实验要求 对于一篇给定的英文文章,分别利用线性表和二叉排序树来实现单词频率的统计,实现低频词的过滤,并比较两种方法的效率。具体要求如下:读取英文文章文件(Infile.txt),识别其中的单词。分别利用线性表和二叉排序树构建单词的存储结构。当识别出一个单词后,若线性表或者二叉排序树中没有该单词,则在适当的位置上添加该单词;若该单词已经被识别,则增加其出现的频率。统计结束后,删除出现频率低于五次的单词,并显示该单词和其出现频率。其余单词及其出现频率按照从高到低的次序输出到文件中(Outfile.txt),同时输出用两种方法完成该工作所用的时间。计算查找表的ASL值,分析比较两种方法的效率。系统运行后主菜单如下:

       当选择1后进入以下界面:

       

其中选择2时显示利用线性表来实现所有功能所用的时间。

当在主菜单选择2二叉排序树后,进入的界面与上图类同。

 

三、实现提示:

1、在统计的过程中,分词时可以利用空格或者标点符号作为划分单词依据,文章中默认只包含英文单词和标点符号。

2、对单词进行排序时,是按照字母序进行的,每个结点还应包含该单词出现的频率。

3、存储结构的定义

二叉排序树的存储表示 typedef struct BSTNode{ string  WordName;           //单词名称

   int count;                        //单词出现频率

struct BSTNode *next;

} BSTNode, *BSTree;

4、实现过程可参见教材上线性表和二叉排序树的相关算法。

 

四、实验方案及其论证

 语言:C++

      运行环境:VS2019

      可行性分析:建立单链表存储InFile.txt英语文章单词及频率,建立二叉排序树存储InFile.txt英语文章单词和频率,分别实现单词统计,删除频率低的单词,输出其余单词,并计算ASL值。

五、数据结构和主要函数

//线性表的存储定义 typedef struct LNode {     string WordName;     int count;     LNode* next; }LNode, *LinkList;

//单链表类 class Linear{ private:     LNode* first; public:     //链表的创建  构造函数     Linear() {         first = new LNode();         first->next = NULL;     }

    //线性表添加单词     void LinearAdd(string tempWord);

    //读取文件     void LinearRead();                                                                                                                         

    //删除频率低于5的单词     void LinearDelete();

    //高频写入文件     void LinearWrite();

    //线性表     void LinearTable();

    //计算ASL     void FindASL(); };  

//二叉排序树的存储定义 typedef struct BiNode {     string  WordName;        //单词名称     int count;                //单词出现频率     struct BiNode* lchild;     struct BiNode* rchild; } BSTNode, * BSTree;

    BiNode* GetRoot(); 

    //二叉树添加单词     BiNode* InsertBST(BiNode* root,BiNode *s);

    //读取文件     BiNode* ReadBST();

    //删除频率低于5的单词     void DeleteBST(BiNode* root);

    //右中左遍历     void GetInBST(BiNode* root);

    //完成写入文件     void WriteBST(BiNode* root);

    //二叉排序树     void TableBST();

    //计算ASL     void FindASL();

六、源代码

https://blog.csdn.net/m0_53276696/article/details/118096202

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3